import axios from 'axios'
import { ElMessage } from 'element-plus'
import { sendNotice } from './noticeService'
import type { NoticeRequest } from './noticeService'

// 定义API返回的基本响应结构
export interface ApiResponse {
  success: boolean;
  message?: string;
  [key: string]: any;
}

// 上色响应数据结构
export interface ColorizeResponse extends ApiResponse {
  id: string;
  image: string;
}

// 可用模型响应数据结构
export interface ModelsResponse extends ApiResponse {
  models: string[];
}

// 反馈表单数据结构
export interface FeedbackData {
  type: string;
  content: string;
  contact?: string;
}

// 本地图像处理服务
const api = axios.create({
  baseURL: 'http://localhost:8000',
  timeout: 30000
})

// 处理响应格式
api.interceptors.response.use(
  (response) => response.data,
  (error) => {
    console.error('API请求错误：', error);
    // 提供简单的错误信息
    ElMessage.error(error.response?.data?.message || '请求失败');
    return Promise.reject(error);
  }
)

// 健康检查
export const checkHealth = (): Promise<ApiResponse> => {
  return api.get('/health')
}

// 上传单张图片进行上色
export const colorizeImage = (image: File): Promise<ColorizeResponse> => {
  const formData = new FormData()
  formData.append('image', image)
  
  return api.post('/colorize', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}

// 批量上传图片进行上色
export const colorizeBatchImages = (images: File[]): Promise<ApiResponse> => {
  const formData = new FormData()
  
  images.forEach((image) => {
    formData.append('images', image)
  })
  
  return api.post('/colorize_batch', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 获取可用的生成器模型列表
export const getAvailableModels = (): Promise<ModelsResponse> => {
  return api.get('/models')
}

// 设置使用的模型
export const setModel = (modelPath: string): Promise<ApiResponse> => {
  return api.post('/set_model', {
    model_path: modelPath
  })
}

// 发送反馈邮件 - 使用专门的通知服务模块
export const sendFeedback = async (data: FeedbackData): Promise<ApiResponse> => {
  // 构造不同类型的反馈标题
  const feedbackTypeMap: Record<string, string> = {
    'feature': '功能建议',
    'bug': '问题反馈',
    'other': '其他反馈'
  };

  // 构造邮件内容
  const emailContent = `
【图像上色系统 - ${feedbackTypeMap[data.type] || '用户反馈'}】

反馈类型: ${feedbackTypeMap[data.type] || '未知类型'}
反馈内容: ${data.content}
联系方式: ${data.contact || '未提供'}

此邮件由系统自动发送，请勿直接回复。
`;

  // 构造请求数据
  const noticeRequest: NoticeRequest = {
    Title: `图像上色系统 - ${feedbackTypeMap[data.type] || '用户反馈'}`,
    Content: emailContent,
    UserNums: ["2274106370@qq.com"],
    Type: "email"
  };

  try {
    // 使用专门的通知服务模块发送请求
    console.log('使用通知服务发送请求');
    const response = await sendNotice(noticeRequest);
    return response;
  } catch (error) {
    console.error('发送反馈邮件失败:', error);
    return {
      success: false,
      message: '提交反馈失败，请稍后再试'
    };
  }
}

export default api 